package version1;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
public class Oracle {
    // 1. 定义 Oracle 数据库基本属性，私有化静态属性，类直接调取属性
    private static String url;
    private static String username;
    private static String password;
    // 2. 定义方法：读取 Oracle 配置文件，获取连接所需参数
    public static void getParam(String fileName) throws IOException {
        Properties p = new Properties();
        // 通过类加载器获取配置文件输入流
        InputStream fis = Oracle.class.getClassLoader().getResourceAsStream(fileName);
        // 加载配置文件内容
        p.load(fis);
        // 从配置文件读取键值对信息，赋值给当前类的数据库基本信息
        url = p.getProperty("url");
        username = p.getProperty("username");
        password = p.getProperty("password");
        // 2.3 打桩，测试是否读取到配置信息
        System.out.println("Oracle 配置信息：url=" + url + ", username=" + username + ", password=" + password);
    }
    // 3. 测试工具类，可扩展实际获取连接、操作数据库逻辑
    public static void main(String[] args) throws IOException {
        Oracle.getParam("db_oracle.properties");
        // 后续可在此处添加获取 Oracle 连接、执行查询/插入等操作的代码，比如：
        // Connection conn = DriverManager.getConnection(url, username, password);
        // 然后用 conn 进行数据库操作
            Oracle.getParam("db_oracle.properties");
            try {
                // 加载 Oracle JDBC 驱动（不同版本驱动类名可能有差异，需对应上）
                Class.forName("oracle.jdbc.driver.OracleDriver");
                // 获取数据库连接
                Connection conn = DriverManager.getConnection(url, username, password);
                Statement stmt = conn.createStatement();
                // 假设要查询 book 表数据，这里写查询语句，根据实际表结构和需求调整
                String sql = "SELECT * FROM mi.book";
                ResultSet rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    // 这里示例获取某列数据，根据实际表字段调整，比如假设表有 id、name 字段
                    System.out.println("id: " + rs.getInt("id") + ", name: " + rs.getString("name"));
                }
                rs.close();
                stmt.close();
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

    }

}
